package com.homework.ch082;

import java.util.Collection;
import java.util.Iterator;

public class GenericMax {
    public static <T extends Comparable<T>> T getMax(Collection<T> collection) {
        // 处理空集合情况
        if (collection == null || collection.isEmpty()) {
            return null;
        }

        // 迭代器遍历集合，查找最大值
        Iterator<T> iterator = collection.iterator();
        T max = iterator.next(); // 初始最大值为第一个元素

        while (iterator.hasNext()) {
            T current = iterator.next();
            // 比较当前元素与最大值，更新最大值
            if (current.compareTo(max) > 0) {
                max = current;
            }
        }

        return max;
    }

    // 测试示例
    public static void main(String[] args) {
        // 测试Integer集合
        Collection<Integer> ints = java.util.Arrays.asList(3, 1, 4, 1, 5, 9);
        System.out.println("整数集合最大值：" + getMax(ints)); // 输出：9

        // 测试String集合（String实现了Comparable接口，按字典序比较）
        Collection<String> strs = java.util.Arrays.asList("apple", "banana", "cherry");
        System.out.println("字符串集合最大值：" + getMax(strs)); // 输出：cherry

        // 测试空集合
        Collection<Double> empties = java.util.Collections.emptyList();
        System.out.println("空集合最大值：" + getMax(empties)); // 输出：null
    }
}